package org.black.phoneUtility.sms.reply.database.dataModel;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import org.black.phoneUtility.sms.reply.provider.SmsReplyContract;

public class SmsReply implements Serializable {
	private static final long serialVersionUID = 6798790400414098300L;

	private Long id;
	private String title;
	private Boolean shouldResponseToMissedCall;
	private Boolean shouldResponseToSms;
	private Boolean missedCallAndSmsUsedDifferentMessages;
	private String phoneMessage;
	private String smsMessage;
	private Boolean isActivated;
	private Date activationDateTime;
	private Integer replyMode;
	private boolean notifyAfterSendingMessage;
	private boolean enableAvoidExcessiveReply;
	private Date creationDateTime;
	private Date modificationDateTime;
	private boolean enableNotResponseToReadMessage;
	private Long delayTimeForNotResponseToReadMessage;
	private boolean enableNotResponseToRespondedMissedCall;
	private Long delayTimeForNotResponseToRespondedMissedCall;
	private boolean enableRingerModeSilent;

	private List<ActivationRecord> activationRecords;
	private List<NoneReplyNumber> noneReplyNumbers;
	private ReplyTimesMode replyTimesMode;
	private List<ReplyTimesMode> replyTimesModes;
	private List<ReplyToSpecificNumber> replyToSpecificNumbers;
	private List<ResponseNumberFrom> responseNumberFroms;

	private int replyDateTimeModeType;

	private Long expiredAfterMilliSeconds;

	private Date periodStartDateTime;
	private Date periodEndDateTime;

	private Date repeatStartTime;
	private Date repeatEndTime;
	private boolean sundayEnable;
	private boolean mondayEnable;
	private boolean tuesdayEnable;
	private boolean wednesdayEnable;
	private boolean thursdayEnable;
	private boolean fridayEnable;
	private boolean saturdayEnable;

	public static final int REPLY_DATE_TIME_MODE_REPEAT_TYPE = SmsReplyContract.SmsReplies.REPLY_DATE_TIME_MODE_REPEAT_TYPE;

	public static final int REPLY_DATE_TIME_MODE_PERIOD_TYPE = SmsReplyContract.SmsReplies.REPLY_DATE_TIME_MODE_PERIOD_TYPE;

	public static final int REPLY_DATE_TIME_MODE_EXPIRED_AFTER_TYPE = SmsReplyContract.SmsReplies.REPLY_DATE_TIME_MODE_EXPIRED_AFTER_TYPE;

	public static final int REPLY_DATE_TIME_MODE_ALWAYS_TYPE = SmsReplyContract.SmsReplies.REPLY_DATE_TIME_MODE_ALWAYS_TYPE;

	public static final int REPLY_MODE_VALUE_REPLY_DIRECTLY = SmsReplyContract.SmsReplies.REPLY_MODE_VALUE_REPLY_DIRECTLY;
	public static final int REPLY_MODE_VALUE_REPLY_TO_SPECIFIC_NUMBERS = SmsReplyContract.SmsReplies.REPLY_MODE_VALUE_REPLY_TO_SPECIFIC_NUMBERS;

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public Boolean getShouldResponseToMissedCall() {
		return shouldResponseToMissedCall;
	}

	public void setShouldResponseToMissedCall(Boolean shouldResponseToMissedCall) {
		this.shouldResponseToMissedCall = shouldResponseToMissedCall;
	}

	public Boolean getShouldResponseToSms() {
		return shouldResponseToSms;
	}

	public void setShouldResponseToSms(Boolean shouldResponseToSms) {
		this.shouldResponseToSms = shouldResponseToSms;
	}

	public Boolean getMissedCallAndSmsUsedDifferentMessages() {
		return missedCallAndSmsUsedDifferentMessages;
	}

	public void setMissedCallAndSmsUsedDifferentMessages(
			Boolean missedCallAndSmsUsedDifferentMessages) {
		this.missedCallAndSmsUsedDifferentMessages = missedCallAndSmsUsedDifferentMessages;
	}

	public String getPhoneMessage() {
		return phoneMessage;
	}

	public void setPhoneMessage(String phoneMessage) {
		this.phoneMessage = phoneMessage;
	}

	public String getSmsMessage() {
		return smsMessage;
	}

	public void setSmsMessage(String smsMessage) {
		this.smsMessage = smsMessage;
	}

	public Boolean getIsActivated() {
		return isActivated;
	}

	public void setIsActivated(Boolean isActivated) {
		this.isActivated = isActivated;
	}

	public Date getActivationDateTime() {
		return activationDateTime;
	}

	public void setActivationDateTime(Date activationDateTime) {
		this.activationDateTime = activationDateTime;
	}

	public Integer getReplyMode() {
		return replyMode;
	}

	public void setReplyMode(Integer replyMode) {
		this.replyMode = replyMode;
	}

	public boolean isNotifyAfterSendingMessage() {
		return notifyAfterSendingMessage;
	}

	public void setNotifyAfterSendingMessage(boolean notifyAfterSendingMessage) {
		this.notifyAfterSendingMessage = notifyAfterSendingMessage;
	}

	public boolean isEnableAvoidExcessiveReply() {
		return enableAvoidExcessiveReply;
	}

	public void setEnableAvoidExcessiveReply(boolean enableAvoidExcessiveReply) {
		this.enableAvoidExcessiveReply = enableAvoidExcessiveReply;
	}

	public Date getCreationDateTime() {
		return creationDateTime;
	}

	public void setCreationDateTime(Date creationDateTime) {
		this.creationDateTime = creationDateTime;
	}

	public Date getModificationDateTime() {
		return modificationDateTime;
	}

	public void setModificationDateTime(Date modificationDateTime) {
		this.modificationDateTime = modificationDateTime;
	}

	public boolean isEnableNotResponseToReadMessage() {
		return enableNotResponseToReadMessage;
	}

	public void setEnableNotResponseToReadMessage(
			boolean enableNotResponseToReadMessage) {
		this.enableNotResponseToReadMessage = enableNotResponseToReadMessage;
	}

	public Long getDelayTimeForNotResponseToReadMessage() {
		return delayTimeForNotResponseToReadMessage;
	}

	public void setDelayTimeForNotResponseToReadMessage(
			Long delayTimeForNotResponseToReadMessage) {
		this.delayTimeForNotResponseToReadMessage = delayTimeForNotResponseToReadMessage;
	}

	public boolean isEnableNotResponseToRespondedMissedCall() {
		return enableNotResponseToRespondedMissedCall;
	}

	public void setEnableNotResponseToRespondedMissedCall(
			boolean enableNotResponseToRespondedMissedCall) {
		this.enableNotResponseToRespondedMissedCall = enableNotResponseToRespondedMissedCall;
	}

	public Long getDelayTimeForNotResponseToRespondedMissedCall() {
		return delayTimeForNotResponseToRespondedMissedCall;
	}

	public void setDelayTimeForNotResponseToRespondedMissedCall(
			Long delayTimeForNotResponseToRespondedMissedCall) {
		this.delayTimeForNotResponseToRespondedMissedCall = delayTimeForNotResponseToRespondedMissedCall;
	}

	public boolean isEnableRingerModeSilent() {
		return enableRingerModeSilent;
	}

	public void setEnableRingerModeSilent(boolean enableRingerModeSilent) {
		this.enableRingerModeSilent = enableRingerModeSilent;
	}

	public List<ActivationRecord> getActivationRecords() {
		return activationRecords;
	}

	public void setActivationRecords(List<ActivationRecord> activationRecords) {
		this.activationRecords = activationRecords;
	}

	public List<NoneReplyNumber> getNoneReplyNumbers() {
		return noneReplyNumbers;
	}

	public void setNoneReplyNumbers(List<NoneReplyNumber> noneReplyNumbers) {
		this.noneReplyNumbers = noneReplyNumbers;
	}

	public ReplyTimesMode getReplyTimesMode() {
		return replyTimesMode;
	}

	public void setReplyTimesMode(ReplyTimesMode replyTimesMode) {
		this.replyTimesMode = replyTimesMode;
	}

	public List<ReplyTimesMode> getReplyTimesModes() {
		return replyTimesModes;
	}

	public void setReplyTimesModes(List<ReplyTimesMode> replyTimesModes) {
		this.replyTimesModes = replyTimesModes;
	}

	public List<ReplyToSpecificNumber> getReplyToSpecificNumbers() {
		return replyToSpecificNumbers;
	}

	public void setReplyToSpecificNumbers(
			List<ReplyToSpecificNumber> replyToSpecificNumbers) {
		this.replyToSpecificNumbers = replyToSpecificNumbers;
	}

	public List<ResponseNumberFrom> getResponseNumberFroms() {
		return responseNumberFroms;
	}

	public void setResponseNumberFroms(
			List<ResponseNumberFrom> responseNumberFroms) {
		this.responseNumberFroms = responseNumberFroms;
	}

	public int getReplyDateTimeModeType() {
		return replyDateTimeModeType;
	}

	public void setReplyDateTimeModeType(int replyDateTimeModeType) {
		this.replyDateTimeModeType = replyDateTimeModeType;
	}

	public Long getExpiredAfterMilliSeconds() {
		return expiredAfterMilliSeconds;
	}

	public void setExpiredAfterMilliSeconds(Long expiredAfterMilliSeconds) {
		this.expiredAfterMilliSeconds = expiredAfterMilliSeconds;
	}

	public Date getPeriodStartDateTime() {
		return periodStartDateTime;
	}

	public void setPeriodStartDateTime(Date periodStartDateTime) {
		this.periodStartDateTime = periodStartDateTime;
	}

	public Date getPeriodEndDateTime() {
		return periodEndDateTime;
	}

	public void setPeriodEndDateTime(Date periodEndDateTime) {
		this.periodEndDateTime = periodEndDateTime;
	}

	public Date getRepeatStartTime() {
		return repeatStartTime;
	}

	public void setRepeatStartTime(Date repeatStartTime) {
		this.repeatStartTime = repeatStartTime;
	}

	public Date getRepeatEndTime() {
		return repeatEndTime;
	}

	public void setRepeatEndTime(Date repeatEndTime) {
		this.repeatEndTime = repeatEndTime;
	}

	public boolean isSundayEnable() {
		return sundayEnable;
	}

	public void setSundayEnable(boolean sundayEnable) {
		this.sundayEnable = sundayEnable;
	}

	public boolean isMondayEnable() {
		return mondayEnable;
	}

	public void setMondayEnable(boolean mondayEnable) {
		this.mondayEnable = mondayEnable;
	}

	public boolean isTuesdayEnable() {
		return tuesdayEnable;
	}

	public void setTuesdayEnable(boolean tuesdayEnable) {
		this.tuesdayEnable = tuesdayEnable;
	}

	public boolean isWednesdayEnable() {
		return wednesdayEnable;
	}

	public void setWednesdayEnable(boolean wednesdayEnable) {
		this.wednesdayEnable = wednesdayEnable;
	}

	public boolean isThursdayEnable() {
		return thursdayEnable;
	}

	public void setThursdayEnable(boolean thursdayEnable) {
		this.thursdayEnable = thursdayEnable;
	}

	public boolean isFridayEnable() {
		return fridayEnable;
	}

	public void setFridayEnable(boolean fridayEnable) {
		this.fridayEnable = fridayEnable;
	}

	public boolean isSaturdayEnable() {
		return saturdayEnable;
	}

	public void setSaturdayEnable(boolean saturdayEnable) {
		this.saturdayEnable = saturdayEnable;
	}

	@Override
	public String toString() {
		return "SmsReply [id=" + id + ", title=" + title
				+ ", shouldResponseToMissedCall=" + shouldResponseToMissedCall
				+ ", shouldResponseToSms=" + shouldResponseToSms
				+ ", missedCallAndSmsUsedDifferentMessages="
				+ missedCallAndSmsUsedDifferentMessages + ", phoneMessage="
				+ phoneMessage + ", smsMessage=" + smsMessage
				+ ", isActivated=" + isActivated + ", activationDateTime="
				+ activationDateTime + ", replyMode=" + replyMode
				+ ", notifyAfterSendingMessage=" + notifyAfterSendingMessage
				+ ", enableAvoidExcessiveReply=" + enableAvoidExcessiveReply
				+ ", creationDateTime=" + creationDateTime
				+ ", modificationDateTime=" + modificationDateTime
				+ ", enableNotResponseToReadMessage="
				+ enableNotResponseToReadMessage
				+ ", delayTimeForNotResponseToReadMessage="
				+ delayTimeForNotResponseToReadMessage
				+ ", enableNotResponseToRespondedMissedCall="
				+ enableNotResponseToRespondedMissedCall
				+ ", delayTimeForNotResponseToRespondedMissedCall="
				+ delayTimeForNotResponseToRespondedMissedCall
				+ ", enableRingerModeSilent=" + enableRingerModeSilent
				+ ", activationRecords=" + activationRecords
				+ ", noneReplyNumbers=" + noneReplyNumbers
				+ ", replyTimesMode=" + replyTimesMode + ", replyTimesModes="
				+ replyTimesModes + ", replyToSpecificNumbers="
				+ replyToSpecificNumbers + ", responseNumberFroms="
				+ responseNumberFroms + ", replyDateTimeModeType="
				+ replyDateTimeModeType + ", expiredAfterMilliSeconds="
				+ expiredAfterMilliSeconds + ", periodStartDateTime="
				+ periodStartDateTime + ", periodEndDateTime="
				+ periodEndDateTime + ", repeatStartTime=" + repeatStartTime
				+ ", repeatEndTime=" + repeatEndTime + ", sundayEnable="
				+ sundayEnable + ", mondayEnable=" + mondayEnable
				+ ", tuesdayEnable=" + tuesdayEnable + ", wednesdayEnable="
				+ wednesdayEnable + ", thursdayEnable=" + thursdayEnable
				+ ", fridayEnable=" + fridayEnable + ", saturdayEnable="
				+ saturdayEnable + "]";
	}
}
